MFC обрабатывает сообщения с помощью карты сообщений. Карта сообщений есть у любого класса, который может обрабатывать сообщения. А обрабатывать сообщения могут только классы порожденные от CCmdTarget. Карта сообщений состоит из двух частей. Первая определяется в заголовке класса.
class CTestListDlg : public CDialog
{
......
DECLARE_MESSAGE_MAP()
};
И описывается в файле реализации:
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Начинается карта сообщений с макроса BEGIN_MESSAGE_MAP, у которого указывается два параметра: имя класса и имя класса родителя. Заканчивается карта сообщений макросом END_MESSAGE_MAP().
В основных случаях карту сообщений формирует Class Wizard на вкладке Message Map.

Внутри карты сообщений используются следующие макросы, но это далеко не полный список.